Imagina que tu hermano pequeño está aprendiendo las tablas de multiplicar y le quieres hacer un programa que las muestre por pantalla.
Empezaremos por la versión fácil: mostrar una tabla de multiplicar. El programa pedirá un número (pongamos que es el 7) y luego mostrará la tabla de multiplicar del número que has dicho, en este caso:
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63 10 * 7 = 70
Para hacer este programa hace falta hacer una iteración que pase por todos los número del 1 al 10 y luego para cada uno muestre por pantalla la línea correspondiente de la tabla. Algo así:
#include <iostream> using namespace std; int main() { int i, N; cin >> N; // la tabla del N for (i = 1; i <= 10; i++) { cout << i << " * " << N << " = " << i*N << endl; } }
La instrucción cout que muestra cada línea es muy precisa: los espacios, endl al final, tener cuidado de poner los valores de i y N, etc.
Pero claro, ya que tenemos el programa que muestra una tabla, porqué no las mostramos todas? Pues bien, en vez de preguntar el número N lo que haremos es ejecutar el bucle del for cambiando N por 1, 2, 3, etc. Eso, de hecho, es otro bucle, que va fuera del anterior. Es decir:
int main() { int i, N; for (N = 1; N <= 10; i++) { for (i = 1; i <= 10; i++) { cout << i << " * " << N << " = " << i*N << endl; } cout << endl << endl; } }
Ahora, el bucle externo (el que mueve la N) tiene un par de instrucciones donde la primera es otro bucle. Cuando el bucle interno (el que mueve la i) va haciendo sus repeticiones, la N está fija a un valor. De hecho los dos bucles juntos pasan por todas las combinaciones posibles de valores de i y N entre 1 y 10, que es lo que ocurre en las tablas de multiplicar.
La segunda instrucción del bucle externo es cout << endl << endl que muestra dos saltos de línea para separar una tabla de la siguiente.
A un bucle dentro de otro a veces se le denomina un "doble bucle".
Haz un programa que pida un número entero y muestre por la pantalla un cuadrado hecho de asteriscos, por ejemplo, si pones 4 saldrá:
**** **** **** ****
y si pones 6 saldrá:
****** ****** ****** ****** ****** ****** ******
Asegúrate de que si pones 0 no salga nada y si pones 1 salga un solo asterisco.
Haz un programa como el anterior pero que muestre números en vez de asteriscos. En cada fila debe aparecer el número de fila repetido. Por ejemplo, si entras 4 sale:
1111 2222 3333 4444
y si entras 6:
111111 222222 333333 444444 555555 666666
Haz un programa que pide un entero y muestra un triángulo por la pantalla hecho de asteriscos. Si entras 4 sale:
* ** *** ****
y si entras 6:
* ** *** **** ***** ******
Haz el mismo programa que el anterior mostrando el número de columna. Es decir, si pones 4 sale:
1 12 123 1234
y si pones 6:
1 12 123 1234 12345 123456
En preparación